django 之Auth 模块的表字段改造

您所在的位置:网站首页 django auth模块 django 之Auth 模块的表字段改造

django 之Auth 模块的表字段改造

2024-02-29 09:58| 来源: 网络整理| 查看: 265

  一、前言:                                                                                                                           

    django在提供Auth模块时,如果需要改造默认的Auth_user表字段,需要在数据迁移初始化之前,一旦做过初始化,再改造,则会报错,此时,可以采用如下方法    点我查看哦 

  1、django 中默认自带的Auth 模块,提供了如下的功能:

    @用户管理

    @权限

    @用户组

    @密码哈希系统

    @用户登录或内容显示的表单和视图

    @一个可插拔的后台系统 admin

 

  2、Django认证系统中提供了用户模型类User保存用户的数据,默认的User包含以下常见的基本字段

字段名字段描述 username 必选。150个字符以内。 用户名可能包含字母数字,_,@,+ . 和-个字符。 first_name 可选(blank=True)。 少于等于30个字符。 last_name 可选(blank=True)。 少于等于30个字符。 email 可选(blank=True)。 邮箱地址。 password 必选。 密码的哈希加密串。 (Django 不保存原始密码)。 原始密码可以无限长而且可以包含任意字符。 groups 与Group 之间的多对多关系。 user_permissions 与Permission 之间的多对多关系。 is_staff 布尔值。 设置用户是否可以访问Admin 站点。 is_active 布尔值。 指示用户的账号是否激活。 它不是用来控制用户是否能够登录,而是描述一种帐号的使用状态。 is_superuser 是否是超级用户。超级用户具有所有权限。 last_login 用户最后一次登录的时间。 date_joined 账户创建的时间。 当账号创建时,默认设置为当前的date/time。

  

二、改造方法                                                                                                                   

  1、再项目的根目录下创建一个子应用

python3 manage.py startapp users

  2、在配置文件中注册子应用(我的配置文件是settings下面的dev.py)

INSTALLED_APPS = [ ... 'users', ]

  3、在users 下的model.py文件中改造表字段

 

3、在users 下的model.py文件中改造表字段 from django.db import models # Create your models here. from django.contrib.auth.models import AbstractUser class User(AbstractUser): """自定义用户""" mobile = models.CharField(max_length=15, verbose_name="手机号码") avatar = models.ImageField(upload_to="avatar",null=True,blank=True, verbose_name="用户头像") wechat = models.CharField(max_length=50,null=True,blank=True, verbose_name="微信号") class Meta: db_table = "ly_user" verbose_name = "用户信息" verbose_name_plural = verbose_name

 

  4、在配置文件中进行设置(我的配置文件是settings目录下的dev.py文件)

    我们自定义的用户模型类还不能直接被Django的认证系统所识别,需要在配置文件中告知Django认证系统使用我们自定义的模型类。

AUTH_USER_MODEL = 'user.User'

  注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。

 

  5、如果在第一次数据迁移以后,才设置AUTH_USER_MODEL自定义用户模型,则会报错。解决方案如下

 

0. 先把现有的数据库导出备份,然后清掉数据库中所有的数据表。 1. 把开发者创建的所有子应用下面的migrations目录下除了__init__.py以外的所有迁移文件,只要涉及到用户的,一律删除 2. 把django.contrib.admin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。 3. 把django.contrib.auth.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。 4. 把reversion.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。 5. 把xadmin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。 6. 接下来,执行数据迁移,回顾第0步中的数据,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。

 

  6、执行数据迁移命令

 

python manage.py makemigrations python manage.py migrate

 

  ~~~~改造完成~~~~   ^_^

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3